#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>//grtenv

#define USER "USER"
#define MY_ENV "myval"

//导入当前路径到环境变量的路径里：export PATH=$PATH:当前路径
//然后当前路径下的所有程序都不用带。/
//环境变量本质是一堆数据或者可以看作是字符
//echo $NAME //NAME:我的环境变量名称


//echo:显示某个环境变量的值              
//--echo是一个命令吗？echo其实是一个子进程    --> hello=888  env | grep hello(找不到hello)  set | grep hello(能找到)  -->hello是一个本地变量不可以被子进程继承  --那为什么echo $hello(为什么能打印本地变量)

//export:设置一个新的环境变量             -- export MYVAL="you can see me"   --export myval=123456
//env:显示所有环境变量
//unset:清除环境变量
//set:显示本地定义的shell变量和环境变量   -- set | grep myval




//环境变量能解决linux下很多问题
//USER:环境变量最大的意义，可以标识当前使用Linux用户


//./mycmd       --bash就是一个系统进程，mycmd也会变成一个进程(fork)，是bash的子进程 -- 环境变量具有全局行 -- 是会被子进程继承下去(为了不同的应用场景 -- 让bash帮我找指令路径，身份认证)
//myval=123456  --本地变量 -- 只会让当前进程(bash)内有效


//获取环境变量的三种方式
//1.getenv(更推荐)-->想要什么提取什么
//2.char* env[]
//3.char** environ

//"ls -a -b -c -d -e" ----->长字符串
//"ls" "-a" "-b" "-c" "-d" "-e"
int main(int argc, char* argv[],char* env[])//int argc:数组的个数      char* argv[]:保存字符串的数组     char* env[]:存放环境变量的数组(表)
{
  //必须要声明
  extern char** environ;
  //NULL->0
  for(int i = 0; environ[i]; i++)
  {
    //如果不想对main函数传参的话c语言库有  char** environ
    printf("%d:%s\n",i,environ[i]); //environ[i]  -->  *(environ+i)
   // printf("env[%d]:%s\n",i,env[i]);
  }

  if(argc != 2)
  {
    //写提示
    printf("Usage :\n\t%s [-a/-b/-c/-ab/-ac/-bc]\n",argv[0]);
    return 1;
  }
  if(strcmp("-a",argv[1])==0)
  {
    printf("功能a\n");
  }
  if(strcmp("-b",argv[1])==0)
  {
    printf("功能b\n");
  }
  if(strcmp("-c",argv[1])==0)
  {
    printf("功能c\n");
  }
  if(strcmp("-ab",argv[1])==0)
  {
    printf("功能ab\n");
  }
  if(strcmp("-ac",argv[1])==0)
  {
    printf("功能ac\n");
  }
  if(strcmp("-bc",argv[1])==0)
  {
    printf("功能bc\n");
  }
 // for(int i = 0; i < argc; i++)
 // {
  //  printf("argv[%d]-> %s\n",i,argv[i]);
 // }
 
  return 0;

  //使用getenv获取环境变量
 // char* myenv = getenv(MY_ENV);//getenv失败返回NULL
 // if(myenv == NULL)
 // {
 //   printf("%s:no found\n",MY_ENV);
 // }
 // else
 // {
 //   printf("%s = %s\n",MY_ENV,myenv);
 // }
  
  
 // char* who = getenv(USER);
 // if(strcmp(who,"root")==0)
 // {
 //   printf("user:%s\n",who);
 // }
 // else{
 //   printf("权限不足！\n");
 // }
 //   return 0;
 // 
  // while(1)
  // {
  //   printf("pid:%d\n",getpid());
  //   sleep(1);
 // }
}
